In [1]:
    
#include <stdio.h>
//Constantes en C
#define CADENA "Un tete a tete con tete"
#define SUBCADENA "te"
/*
* Funcion que busca la ultima aparicion de una sub-cadena dada en otra cadena.
* Devuelve la posicion donde comienza la sub-cadena, o -1 en caso de no encontrarla.
*/
int buscar_ultimo(char* cadena,char* subcadena); // Definicion del prototipo
int buscar_ultimo(char* cadena,char* subcadena){
    if (!cadena[0]) //Caso cadena[0]=='\n'
        return 0;
    
    int posicion = buscar_ultimo(cadena+1,subcadena);
    
    if (posicion > -1) //Caso ya se encontro, entonces no es el ultimo
        return posicion + 1; //Actualizo la posicion
    
    int i = 0;
    while (cadena[i] && subcadena[i] && cadena[i]==subcadena[i])
        i++; //Busco donde dejan de ser iguales, o una se termina
    
    if (subcadena[i] == '\0')
        return 0; //Lo subcadena se termino, entonces esta
    else
        return -1; //No esta
    
    //return (subcadena[i]) ? -1 : 0 ; //Operador ternario en C
    // <condicion> ? <si verdadero> : <si falso>
}
int main(){
    int resultado = buscar_ultimo(CADENA,SUBCADENA);
    printf("Esta en la posicion: %d\n",resultado);
    return 0;
}
    
    
    
In [2]:
    
#include <stdio.h>
//Constantes en C
#define CADENA "Un tete a tete con tete"
#define SUBCADENA "te"
/*
* Funcion que busca la ultima aparicion de una sub-cadena dada en otra cadena.
* Devuelve la posicion donde comienza la sub-cadena, o -1 en caso de no encontrarla.
*/
int buscar_ultimo(char* cadena,char* subcadena); // Definicion del prototipo
int buscar_ultimo(char* cadena,char* subcadena){
    if (!cadena[0]) //Caso cadena[0]=='\n'
        return 0;
    
    int posicion = buscar_ultimo(cadena+1,subcadena);
    
    if (posicion > -1) //Caso ya se encontro, entonces no es el ultimo
        return posicion + 1; //Actualizo la posicion
    
    int i = 0;
    while (cadena[i] && subcadena[i] && cadena[i]==subcadena[i])
        i++; //Busco donde dejan de ser iguales, o una se termina
    
    //if (subcadena[i] == '\0')
    //    return 0; //Lo subcadena se termino, entonces esta
    //else
    //    return -1; //No esta
    
    return (subcadena[i]) ? -1 : 0 ; //Operador ternario en C
    // <condicion> ? <si verdadero> : <si falso>
}
int main(){
    int resultado = buscar_ultimo(CADENA,SUBCADENA);
    printf("Esta en la posicion: %d\n",resultado);
    return 0;
}
    
    
    
In [37]:
    
#include <stdio.h>
#include <stdbool.h>
#define TEXTO "En una tarde nublada y fria, dos ninos patinaban sin preocupacion sobre una laguna congelada. De repente el hielo se rompio, y uno de ellos cayo al agua. El otro agarro una piedra y comenzo a golpear el hielo con todas sus fuerzas, hasta que logro quebrarlo y asi salvar a su amigo."
#define NOTA "El parcial es el proximo viernes, estudien"
#define NOTA2 "En una laguna congelada"
bool se_puede_escribir_nota(char* texto,char* nota){
    int contadores[256] = {0};
    
    int i = 0;
    while (texto[i]){
        contadores[ texto[i] ]++;
        i++;
    }
    
    i = 0;
    while (nota[i]){
        contadores[ nota[i] ]--;
        if (contadores[ nota[i] ] < 0)
            return false;
        i++;
    }
    return true;
}
int main(){
    bool resultado = se_puede_escribir_nota(TEXTO,NOTA);
    if (resultado)
        printf("Se puede escribir la nota: '%s'\n",NOTA);
    else
        printf("No se puede escribir la nota: '%s'\n",NOTA);
    return 0;
}
    
    
    
In [36]:
    
#include <stdio.h>
#include <stdbool.h>
#define TEXTO "En una tarde nublada y fria, dos ninos patinaban sin preocupacion sobre una laguna congelada. De repente el hielo se rompio, y uno de ellos cayo al agua. El otro agarro una piedra y comenzo a golpear el hielo con todas sus fuerzas, hasta que logro quebrarlo y asi salvar a su amigo."
#define NOTA "El parcial es el proximo viernes, estudien"
#define NOTA2 "En una laguna congelada"
bool se_puede_escribir_nota(char* texto,char* nota){
    int contadores[256] = {0};
    
    int i = 0;
    while (texto[i]){
        contadores[ texto[i++] ]++;
    }
    
    i = 0;
    while (nota[i]){
        contadores[ nota[i] ]--;
        if (contadores[ nota[i++] ] < 0)
            return false;
    }
    return true;
}
int main(){
    bool resultado = se_puede_escribir_nota(TEXTO,NOTA2);
    if (resultado)
        printf("Se puede escribir la nota: '%s'\n",NOTA2);
    else
        printf("No se puede escribir la nota: '%s'\n",NOTA2);
    return 0;
}
    
    
    
In [30]:
    
#include <stdio.h>
int main(){
    int i = 0;
    
    printf("%d \n",++i);
    printf("%d \n",++i);
    printf("%d \n",++i);
    printf("%d \n",++i);
    printf("%d \n",++i);
    printf("%d \n",++i);
    printf("%d \n",++i);
    
    return 0;
}
    
    
    
In [31]:
    
#include <stdio.h>
int main(){
    int i = 0;
    
    printf("%d \n",i++);
    printf("%d \n",i++);
    printf("%d \n",i++);
    printf("%d \n",i++);
    printf("%d \n",i++);
    printf("%d \n",i++);
    printf("%d \n",i++);
    
    return 0;
}
    
    
    
In [40]:
    
#include <stdio.h>
#include <stdbool.h>
#define TEXTO "En una tarde nublada y fria, dos ninos patinaban sin preocupacion sobre una laguna congelada. De repente el hielo se rompio, y uno de ellos cayo al agua. El otro agarro una piedra y comenzo a golpear el hielo con todas sus fuerzas, hasta que logro quebrarlo y asi salvar a su amigo."
#define NOTA "El parcial es el proximo viernes, estudien"
#define NOTA2 "En una laguna congelada"
bool se_puede_escribir_nota(char* texto,char* nota){
    int contadores[256] = {0};
    
    while ( *texto ){
        contadores[ *texto++ ]++;
    }
    
    while ( *nota ){
        contadores[ *nota ]--;
        if (contadores[ *nota++ ] < 0)
            return false;
    }
    return true;
}
int main(){
    bool resultado = se_puede_escribir_nota(TEXTO,NOTA);
    if (resultado)
        printf("Se puede escribir la nota: '%s'\n",NOTA);
    else
        printf("No se puede escribir la nota: '%s'\n",NOTA);
        
    resultado = se_puede_escribir_nota(TEXTO,NOTA2);
    if (resultado)
        printf("Se puede escribir la nota: '%s'\n",NOTA2);
    else
        printf("No se puede escribir la nota: '%s'\n",NOTA2);
        
    return 0;
}